package acs.bridge.dao;

import org.springframework.jdbc.core.JdbcTemplate;

import java.math.BigDecimal;
import java.sql.Clob;
import java.util.List;

/**
 * ACS
 * User: stas
 * Date: 07.04.13
 * Time: 21:22
 */
public interface BridgeDAOInterface {
    /* Запуск обработки интерфейса */
    void prc_start_meta_processing(String a_group_tag, String a_meta_tag);

    /* Завершение обработки интерфейса */
    void prc_finish_meta_processing();

    /* Открываем транзакцию */
    BigDecimal fnc_start_transaction();

    /* Закрываем транзакцию */
    void prc_finish_transaction();

    public JdbcTemplate getJdbcTemplate();

    /* Обработка строки raw через внутренний буфер */
    BigDecimal fnc_start_raw_processing(BigDecimal a_raw_id);

    /* Обработка строки raw через внутренний буфер */
    void prc_finish_raw_processing(BigDecimal a_raw_id, BigDecimal a_index);

    /* Проверка на остановку интерфейса */
    BigDecimal fnc_check_disable();

    /* Возвратить промежуточную таблицу */
    List get_g_tt_bridge_raw();

    /* Вывод сообщение */
    void prc_msg(String a_text, String a_action, String a_param, Integer a_level, String a_error_tag);

    /* Вывод сообщение с сохранением id */
    void msg(String a_text, String a_action, String a_param, Integer a_level, String a_error_tag, Integer a_is_critical);

    /* Установа сообщения об ошибке */
    void set_cur_log_text(String a_log_text);

    /* Была ли ошибка */
    Integer fnc_is_error();

    /* Получить конфигурацию модуля по тегу */
    Clob get_module_config(String a_module_tag);

    /* Получить значение поля типа String из таблицы raw */
    String get_string_field_by_id(String a_group_tag, String a_meta_tag, BigDecimal a_id, String a_filed_name, String a_source);

    Integer fnc_get_fr_id_exists(final String a_fr_id, final String a_group_tag, final String a_meta_tag);

    /* Получить текущий sid лога */
    BigDecimal get_log_sid();

    /* Получить схему для группы */
    String fnc_schema_by_group(final String a_group_tag, final String a_meta_tag);

    /* Ошибка на обработке */
    void prc_processing_error(String a_text);

    public BigDecimal get_task_id();

    public BigDecimal get_object_exist(final String a_owner, final String a_table_name, final String a_object_name);

    public void final_processing(BigDecimal taskID, String a_proc_name);
}
